package ar.uade.fain.ai.tpo.dao;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Set;

import ar.uade.fain.ai.tpo.model.Unidad;

public class UnidadDAO extends CacheDAOSupport<Unidad>{
	
	private static final String SELECT_UNIDAD = 
			"SELECT * FROM delivery.dbo.UNIDAD";

	public UnidadDAO() {
		super();
	}
	
	public Set<Unidad> getAll() {
		if (getEntidades().isEmpty()){
			setEntidades(database().select(SELECT_UNIDAD, 
				new ParameterSetter() {
				@Override
				public void setParametros(PreparedStatement statement)
						throws SQLException {
				}
			}, 	new RowMapper<Unidad>() {
				@Override
				public Unidad map(ResultSet rs) throws SQLException {
					final Unidad unidad = new Unidad();
					unidad.setId(rs.getLong("idunidad"));
					unidad.setNombre(rs.getString("nombre"));
					return unidad;
				}
			}));
		}
		return getEntidades();
	} 
	
	public Unidad buscarPorId(final Long id) {
		if (id != null) {
			Set<Unidad> unidadEnCache = buscarEnCache(new Selector<Unidad>() {
				@Override
				public boolean aceptar(Unidad entidad) {
					return entidad.getId().equals(id);
				}
			});
			if(!unidadEnCache.isEmpty()){
				return unidadEnCache.iterator().next();
			} else {
				return null;
			}
		} else {
			return null;
		}
		
	}

}
